/**
 * LCR 091. 粉刷房子
 * https://leetcode.cn/problems/JEj789/description/
 */
class Solution {
    public int minCost(int[][] costs) {
        int row = costs.length;//行
        int col = costs[0].length;//列,,只有3列，题目说明了
        //创建dp表
        int[][] dp = new int[row + 1][col];//初始化
        //状态转移方程
        for(int i = 1; i < row + 1; i++) {
            dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + costs[i - 1][0];//红
            dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + costs[i - 1][1];//蓝
            dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + costs[i - 1][2];//蓝
        }
        //返回值
        return Math.min(dp[row][0], Math.min(dp[row][1], dp[row][2]));
    }
}